[!] Error: Unexpected token
node_modules\axios\package.json (2:9)
1: {
2: "_from": "axios",
^
与将 axios 导入纯 ES6 项目时相同的错误,并且没有为 rollup-plugin-node-resolve 设置 browser = true。 简单的测试用例:单个 js 文件包含
import axios from "axios";
window.process = window.process || { env: {} };
axios.get("http://httpbin.org/").then(response => console.log("Got length: " + response.data.length));
使用下面的 rollup.config.js 会产生错误,但是当排除 rollup-plugin-typescript2 时它可以工作。
import typescript from 'rollup-plugin-typescript2';
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
export default {
input: 'src/main.js',
output: {
file: 'public/bundle.js',
format: 'iife',
sourcemap: true
},
plugins: [
typescript(),
resolve({ browser: true }),
commonjs()
]
};
你能试试这里提出的建议吗: https :
谢谢,这似乎有效(将 rollup-plugin-json 添加为插件)!
输出与卷起相应的 .js 文件有很大不同,但 iife 签名变为
var SomeName = (function (exports,tty,util,url,http,https,assert,stream,zlib)...
我期待 rollup-plugin-typescript2 基本上使用我的 tsconfig.config 运行 tsc 作为预汇总步骤,但是当我这样做时(首先是 tsc,然后在没有 typescript 插件的情况下汇总)我得到
var SomeName = (function (exports)...
我可能在这里缺少一些配置设置..?
函数内部是否使用了那些其他参数? 两种情况下的身体是否相同?
是的,它们被使用了,还有一个额外的大块,从
function createCommonjsModule(fn, module) {
在正文的中间(与使用纯 js 作为源相比,使用 typescript 插件时)。 很多似乎与 Node 调试功能有关。
我在这里提供了一个最小的测试用例存储库。
查看您的测试存储库,该插件产生与 tsc 相同的输出。 您可以在.rpt2_cache/xxx/code/xxx
文件中检查它——在里面寻找 json 的code
属性。 这就是传递给 rollup 的内容。
2 个结果的主要区别在于import axios from 'axios';
何时执行 - 在普通 js rollup 的情况下抓取axios/dist/axios.js
- webpaked 构建。 在使用插件axios/lib/axios.js
已解决。
Webpacked build 显然是rollup-plugin-node-resolve
在浏览器模式下神奇地找到的浏览器版本。
如果您将 typescript 插件放在链的最后,rollup 使用 node-resolve 自行解析导入,并且一切都按预期工作。
您的测试仓库中的这一行:
tsPluginConf.plugins.splice(tsPluginConf.plugins.length - 1, 0, typescript());
这是我第一次看到插件顺序真的很重要:)。 我会更新自述文件。
您现在可能也不需要 json 插件。
@ezolenko我真的被自述文件迷住了😬
它说:
Must be before this plugin in the plugin list, especially when browser: true option is used, see #66
我想我在想我应该把打字稿插件放在哪里,然后我读了下一行并认为this plugin
指的是rollup-plugin-node-resolve
。
伟大的工作! 谢谢
已修复,谢谢:)
最有用的评论
查看您的测试存储库,该插件产生与 tsc 相同的输出。 您可以在
.rpt2_cache/xxx/code/xxx
文件中检查它——在里面寻找 json 的code
属性。 这就是传递给 rollup 的内容。2 个结果的主要区别在于
import axios from 'axios';
何时执行 - 在普通 js rollup 的情况下抓取axios/dist/axios.js
- webpaked 构建。 在使用插件axios/lib/axios.js
已解决。Webpacked build 显然是
rollup-plugin-node-resolve
在浏览器模式下神奇地找到的浏览器版本。如果您将 typescript 插件放在链的最后,rollup 使用 node-resolve 自行解析导入,并且一切都按预期工作。
您的测试仓库中的这一行:
tsPluginConf.plugins.splice(tsPluginConf.plugins.length - 1, 0, typescript());
这是我第一次看到插件顺序真的很重要:)。 我会更新自述文件。