NodeJS 语法错误:无法在模块外部使用import语句[已解决]

bqf10yzr  于 2022-12-18  发布在  Node.js
关注(0)|答案(2)|浏览(527)

我真的把这个问题的所有重复问题都想了一遍,没有一个解决方案起作用。这是不同的。
我的项目在本地计算机上运行得很好,但是当我在服务器上运行它时,我得到了这个错误:> ts-node ./src/index.ts
SyntaxError: Cannot use import statement outside a module .

浏览器中未运行任何内容。

它只是服务器端 ts

/root/ae-system/node_modules/rithmic-api/src/index.ts:1
import os from 'os'
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at internalCompileFunction (node:internal/vm:74:18)
    at wrapSafe (node:internal/modules/cjs/loader:1141:20)
    at Module._compile (node:internal/modules/cjs/loader:1182:27)
    at Module._compile (/usr/lib/node_modules/ts-node-dev/node_modules/source-map-support/source-map-support.js:568:25)
    at Module.m._compile (/tmp/ts-node-dev-hook-1410233924574671.js:69:33)
    at Module._extensions..js (node:internal/modules/cjs/loader:1272:10)
    at require.extensions..jsx.require.extensions..js (/tmp/ts-node-dev-hook-1410233924574671.js:114:20)
    at require.extensions.<computed> (/tmp/ts-node-dev-hook-1410233924574671.js:71:20)
    at Object.nodeDevHook [as .ts] (/usr/lib/node_modules/ts-node-dev/lib/hook.js:63:13)
    at Module.load (node:internal/modules/cjs/loader:1081:32)
[ERROR] 13:49:17 SyntaxError: Cannot use import statement outside a module

以上错误发生在本地npm模块。该模块不是从npm注册表安装的,而是一个自定义的typescribe项目。

依赖项已添加到主文件夹:
package.json

...
  "dependencies": {
    "rithmic-api": "file:rithmic-api",
  }
...

我不知道是不是因为这个原因。
我的本地npm和节点版本几乎等于服务器版本:
x1米2英寸x1米3英寸
对于 typescript 配置:
定制NPM模块具有
tsconfig.json

{
    "compilerOptions": {
        "target": "ESNext",
        "module": "CommonJS",
        "outDir": ".dist/src",
        "moduleResolution": "node",
        "listFiles": false,
        "alwaysStrict": true,
        "noUnusedLocals": false,
        "noImplicitReturns": true,
        "noImplicitThis": true,
        "noImplicitAny": true,
        "strictNullChecks": true,
        "noFallthroughCasesInSwitch": true,
        "forceConsistentCasingInFileNames": true,
        "pretty": true,
        "sourceMap": false,
        "types": ["node"],
        "esModuleInterop": true,
        // "declaration": true,
        // "rootDir": "sys",
        // "skipLibCheck": true,
        // "noStrictGenericChecks": true,
        // "noUnusedParameters": false,
        // "experimentalDecorators": true,
        // "emitDecoratorMetadata": true,
    },
    "include": ["./src/**/*.ts"],
    "exclude": ["node_modules"],
}


主项目文件夹具有

{
    "compilerOptions": {
        "target": "ESNext",
        "module": "CommonJS",
        "outDir": ".dist/src",
        "moduleResolution": "node",
        "listFiles": false,
        "alwaysStrict": true,
        "noUnusedLocals": false,
        "noImplicitReturns": true,
        "noImplicitThis": true,
        "noImplicitAny": true,
        "strictNullChecks": true,
        "noFallthroughCasesInSwitch": true,
        "forceConsistentCasingInFileNames": true,
        "pretty": true,
        "sourceMap": false,
        "types": ["node"],
        "esModuleInterop": true,
        // "declaration": true,
        // "rootDir": "sys",
        // "skipLibCheck": true,
        // "noStrictGenericChecks": true,
        // "noUnusedParameters": false,
        // "experimentalDecorators": true,
        // "emitDecoratorMetadata": true,
    },
    "include": ["src/**/*.ts"],
    "exclude": ["node_modules"],
}

运行该项目的主要脚本包括:

"scripts": {
    "start": "ts-node ./src/index.ts",
    "dev": "tsnd --cache-directory \".cache\" --watch \"./rithmic-api/src, ./strategy\" --respawn --clear --no-warnings ./src/index.ts",
    "build": "tsc"
  },
eoxn13cs

eoxn13cs1#

这个问题是由我自己或npm中的一些更改引起的,其中本地包没有链接,但已安装
我使用以下说明修复了该问题:
https://www.geeksforgeeks.org/how-to-install-a-local-module-using-npm/

cotxawn7

cotxawn72#

这看起来像是一个typescript找不到你的tsconfig.json文件的问题。你的配置看起来很好。我想知道的是,为什么你不把所有的东西都构建到dist文件夹中,而只是把dist文件夹部署到你的服务器上,这样模块就构建到dist中了?我认为运行javascriptnode比运行typescriptts-node更快。
经以下讨论后,由OP修复:i fixed the problem using these instructions. geeksforgeeks.org/how-to-install-a-local-module-using-npm

相关问题