node_modules/
my_module/
lib/
index.ts
src/
index.ts
我制作了一个自定义模块my_module
,并希望将其用作外部库。代码如下:
[src / index.ts]
import { hello } from 'my_module'
console.log(hello)
[node_modules / my_module / index.ts]
export const hello = "Hello"
我的tsconfig.json
说"module": "commonjs", "target": "es6"
,所以我认为import关键字在Typescript文件中可以很好地工作。
正如我预期的那样,src/index.ts
中的import关键字效果很好,但是node_modules/my_module/index.ts
中的export关键字是意外令牌。如何解决这个问题?
export const hello = "hello"
^^^^^^
SyntaxError: Unexpected token export
at new Script (vm.js:83:7)
at createScript (vm.js:267:10)
at Object.runInThisContext (vm.js:319:10)
at Module._compile (internal/modules/cjs/loader.js:685:28)
at Module._extensions..js (internal/modules/cjs/loader.js:733:10)
at Object.require.extensions.(anonymous function) [as .ts] (/usr/local/lib/node_modules/ts-node/src/index.ts:431:14)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Module.require (internal/modules/cjs/loader.js:658:17)
答案 0 :(得分:1)
除非将项目配置为从node_modules
来转译模块(通常不建议这样做,因为这样做效率低下且不需要),否则预计将按原样评估外部模块,而不会import
关键字在CommonJS模块中允许。
my_module
应该在发布之前进行编译,即应该执行tsc
,并且dist
应该包含转译的* .js和* .d.ts类型。
main
在
my_module
package.json应指定入口点"main": "dist/index.js"
。
该软件包可以选择包含.npmrc file,以从发布的文件中排除src
,但这不是必需的。