javascript - require 为何时灵时不灵
大家讲道理
大家讲道理 2017-04-11 10:56:07
[JavaScript讨论组]

__resourceQuery 是 Webpack 中的常量。

这样是可以的:

const hotClient = require('webpack-hot-middleware/client' + __resourceQuery)

而这样是不行的:

const hotClient = require(`webpack-hot-middleware/client${__resourceQuery}`)

为啥用了 ES6 的字符串模板之后就不灵了呢=。=


补充:

es6 肯定是开了的,Babel 也是装了的。

我疑问的是,理论上 require import 应该都不允许变量构建才对,为什么 require 可以 warning 而 import 直接 error 了。

怪我表述不清,所有的情况如下:

  1. 使用 import + 变量:

  const r = './LeftBar.vue'
  import LeftBar from r

babel 报错:

Module build failed: SyntaxError: /Main.vue: Unexpected token (16:20)
  1. 使用 import + template :

  const r = './LeftBar.vue'
  import LeftBar from `${r}`

babel 报错:

Module build failed: SyntaxError: /Main.vue: Unexpected token (16:20)
  1. 使用 require + template:

  const r = './LeftBar.vue'
  const LeftBar = require(`${r}`)

没有问题

  1. 使用 require + 变量:

  const r = './LeftBar.vue'
  const LeftBar = require(r)

warning:

            18:14-24 the request of a dependency is an expression

不过后来想想是我傻逼了。。。require 直接引入 var 是不走 babel 的,而其他 babel 其实都编译过了=。=表现不同也正常

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(5)
高洛峰

既然用了es6,为什么不用import

巴扎黑

不灵的意思是,报错了?还是编译出来的内容不正确?

PHPz

你的第二种是es6写法,好些浏览器是不支持的,需要用bable解析成es5的,建议你查下webpack>bable>es6,当然bable只是其中一种解析方式~

PHPz

楼上说的正解,es6 template-literals 需要转换才能用

http://babeljs.io/docs/plugins/transform-es2015-template-literals/

怪我咯

require('assets/' + logoName) 报warning:You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token

能正常引入,但是Console里全是warning,请问应该怎么解决呀。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号