在 express 之外的脚本中从 express 应用程序导入模块时出现问题

jim*_*thy 7 javascript node.js express

我有一个 vanilla Express 应用程序,它的 package.json 看起来像这样:

{
  "name": "express-app",
  "version": "1.0.0",
  "main": "app.js",
  "dependencies": {
    ...
  },
  "devDependencies": {
    ...
  },
  "scripts": {
    ...
  },
}
Run Code Online (Sandbox Code Playgroud)

我想在 express 应用程序之外编写一个脚本,用于从 express 应用程序导入模块。该模块驻留在./src/model/Example.js该模块中还导入了各种其他模块。

该脚本位于./scripts/test.mjs并执行:

import Example from '../src/models/Example.js';

但是,我遇到了第一个从Example.js以下导入的问题:

SyntaxError: Cannot use import statement outside a module
Run Code Online (Sandbox Code Playgroud)

我如何构建它以便脚本可以正确导入模块?

Aad*_*han 2

这是因为你的项目在 vanilla JS 中,导入语句不起作用。您可以使用parceljs,一个支持ES6及以上语法的零配置包捆绑器来使用它,首先通过运行将其添加为开发依赖项

npm install parcel-bundler --save-dev
Run Code Online (Sandbox Code Playgroud)

然后将脚本添加到您的package

{
  "scripts": {
    "dev": "parcel <your entry file>",
    "build": "parcel build <your entry file>"
  }
}
Run Code Online (Sandbox Code Playgroud)

将入口文件替换为代码中的主文件(例如app.js:)