npm + Typescript:不能在模块外使用 import 语句
npm + Typescript: Cannot use import statement outside a module
我写了一个包发布到npm。包以
开头
import * as aws from "@pulumi/aws";
import * as pulumi from "@pulumi/pulumi";
export interface ...
export class controlplaneDependencies extends pulumi.ComponentResource {
...
发布和安装工作正常。当我尝试 运行 来自不同 index.ts
的代码时,它失败并显示错误
import * as aws from "@pulumi/aws";
^^^^^^
SyntaxError: Cannot use import statement outside a module
at compileFunction (<anonymous>)
at Object.compileFunction (node:vm:353:18)
at wrapSafe (node:internal/modules/cjs/loader:1039:15)
at Module._compile (node:internal/modules/cjs/loader:1073:27)
at Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
at Object.require.extensions.<computed> [as .ts] (/Users/cinto/public-cloud-operator/tests/aws/node_modules/ts-node/src/index.ts:431:14)
at Module.load (node:internal/modules/cjs/loader:989:32)
at Function.Module._load (node:internal/modules/cjs/loader:829:14)
at Module.require (node:internal/modules/cjs/loader:1013:19)
at require (node:internal/modules/cjs/helpers:93:18)
这就是我调用包的方式
import * as controlplane from "@bb/controlplane";
stackOutput=new controlplane.controlplaneDependencies("Install dependencies", {
Provider: awsProvider,
我不知道如何解决这个问题。我尝试添加 "type": "module",
但仍然失败。
我也试过了
const aws = require( "@hybrid-cloud/aws" )
但是aws
无法在界面内访问。
任何指点都有帮助。这是 tsconfig.json
{
"compilerOptions": {
"strict": true,
"strictPropertyInitialization": false,
"target": "ES6",
"module": "CommonJS",
"moduleResolution": "Node",
"sourceMap": true,
"declaration": true,
"experimentalDecorators": true,
"pretty": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noImplicitAny": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"lib": [
"es2019",
"es5",
"es6",
"dom",
"es2015.collection"
],
"outDir": "./bin"
},
"exclude": [
"node_modules"
]
}
我将此添加到 package.json,现在可以使用了
"scripts": {
"build": "tsc",
"build:typecheck": "tsc --noEmit",
"lint:check": "eslint src/**/*.ts",
"lint:fix": "eslint --fix src/**/*.ts"
},
"main": "bin/src/index.js"
我也只是将 es6
保存在我的库中。感谢大家的帮助
我写了一个包发布到npm。包以
开头import * as aws from "@pulumi/aws";
import * as pulumi from "@pulumi/pulumi";
export interface ...
export class controlplaneDependencies extends pulumi.ComponentResource {
...
发布和安装工作正常。当我尝试 运行 来自不同 index.ts
的代码时,它失败并显示错误
import * as aws from "@pulumi/aws";
^^^^^^
SyntaxError: Cannot use import statement outside a module
at compileFunction (<anonymous>)
at Object.compileFunction (node:vm:353:18)
at wrapSafe (node:internal/modules/cjs/loader:1039:15)
at Module._compile (node:internal/modules/cjs/loader:1073:27)
at Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
at Object.require.extensions.<computed> [as .ts] (/Users/cinto/public-cloud-operator/tests/aws/node_modules/ts-node/src/index.ts:431:14)
at Module.load (node:internal/modules/cjs/loader:989:32)
at Function.Module._load (node:internal/modules/cjs/loader:829:14)
at Module.require (node:internal/modules/cjs/loader:1013:19)
at require (node:internal/modules/cjs/helpers:93:18)
这就是我调用包的方式
import * as controlplane from "@bb/controlplane";
stackOutput=new controlplane.controlplaneDependencies("Install dependencies", {
Provider: awsProvider,
我不知道如何解决这个问题。我尝试添加 "type": "module",
但仍然失败。
我也试过了
const aws = require( "@hybrid-cloud/aws" )
但是aws
无法在界面内访问。
任何指点都有帮助。这是 tsconfig.json
{
"compilerOptions": {
"strict": true,
"strictPropertyInitialization": false,
"target": "ES6",
"module": "CommonJS",
"moduleResolution": "Node",
"sourceMap": true,
"declaration": true,
"experimentalDecorators": true,
"pretty": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noImplicitAny": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"lib": [
"es2019",
"es5",
"es6",
"dom",
"es2015.collection"
],
"outDir": "./bin"
},
"exclude": [
"node_modules"
]
}
我将此添加到 package.json,现在可以使用了
"scripts": {
"build": "tsc",
"build:typecheck": "tsc --noEmit",
"lint:check": "eslint src/**/*.ts",
"lint:fix": "eslint --fix src/**/*.ts"
},
"main": "bin/src/index.js"
我也只是将 es6
保存在我的库中。感谢大家的帮助