node.js - SyntaxError:意外的令牌导入 - Node.js
问题描述
我正在尝试使用 webpack 对我的应用程序进行代码拆分,但 webpack 没有为我的动态导入创建块。我在这里找到了一个来源: https ://davidea.st/articles/webpack-typescript-code-split-wont-work 其中说我需要将 tsconfig 文件中的模块属性从“commonjs”更改为“esnext”,这样打字稿编译器就不会将我的动态导入语句减少到 Promise,导致 Webpack 不知道它们是动态导入,因此不会创建动态块。我遵循了这一点,在编译过程中我可以看到正在创建的块!哇哦!但是,当尝试解析我的 express 应用程序中的导入语句时,编译器出错了,我的问题的标题出现了错误,因为这些 ES 导入不再被简化为节点可以理解的东西。有谁知道这是否可以实现?我想在节点中使用 ES 导入语句,但没有将我的 tsconfig 文件中的模块属性设置为“commonjs”。我真的不
tsconfig.json:
{
"compilerOptions": {
"target": "es6",
"module": "esnext",
"allowJs": true,
"sourceMap": false,
"inlineSourceMap": true,
"strict": true,
"strictNullChecks": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noEmitOnError": true,
"removeComments": false,
"forceConsistentCasingInFileNames": true,
"suppressImplicitAnyIndexErrors": false,
"jsx": "react",
"watch": false,
"moduleResolution": "node"
}}
节点版本:v8.11.3
我在我的 npm 脚本中使用 ts-node 来执行我的服务器代码:
"开始": "webpack && ts-node -- ./src/service/index.ts --env=prod"
我的 .babelrc 如下所示:
{
"presets": [
"react",
"stage-3",
[
"env",
{
"modules": false
}
]
],
"plugins": [
"react-hot-loader/babel",
"syntax-dynamic-import"
]
}
解决方案
默认情况下,使用工作目录ts-node
中文件中的编译器选项;您可以使用该选项tsconfig.json
指定不同的tsconfig.json
文件。您使用--project
的文件必须设置为(或省略,在这种情况下默认为),以便动态编译生成 Node 可以理解的模块。您可能需要为运行的服务器代码和使用 Webpack 打包的客户端代码使用单独的文件。tsconfig.json
ts-node
module
commonjs
ts-node
commonjs
tsconfig.json
ts-node
推荐阅读
- sonarqube - 声纳库 | 新代码周期和代码覆盖率
- javascript - 从 Typescript 中的数组中选择 N 个随机项的函数
- java - 将 String 的映射填充到公共接口的 Spring bean
- powershell - 使用 powershell 提取的拆分值表
- database - 在 postgresql 中发送数据集
- python - 为什么我在应用此代码时收到此错误。我在下面附上了错误和代码?
- moq - 对 Web API 插入记录方法执行 xUnit Moq 测试
- node.js - nodejS express 服务器是否启动并运行而无需编写 app.listen() 语句?
- mapbox - mapbox 地理编码 API 响应中缺少 short_code(对于美国领土内的一个区域)
- r - 如何在R中导入具有相同模式的excel表?